查看: 17482|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr8 n2 M  U" U! r" F& X
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ' |2 K* t9 @- _8 }# ^4 H- L
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
0 M! r: j. w/ |2 h2 Uusage: himr <address> <value>. sample: himr 0x80040000 0x0( e0 o6 U+ L* Y( k5 I

! u5 e' P+ x" W/ Z2 h* N6 `6 O1 @) m+ P
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
1 c, r0 s0 K: s/ x8 O
3 K9 E6 R/ C& t补充内容 (2012-3-8 09:42):$ `/ z1 J" N  _/ ?9 Z1 t' H5 q
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
8 L4 ?6 o5 s9 Y  n" P8 C这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
% E8 m- p+ S$ w4 b  K5 N9 ^! `
  v5 j) ?/ z( U% R9 {4 chimr <address> <value>. sample: himr 0x80040000 0x0
- k: V) R8 c8 ]& j7 F' T0 J
' ]$ H/ O7 v; e5 r3 B例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
# G; g  f3 s1 ?2 whimr 0x80040000 0x00
/ D# r/ {: q8 N+ ^* m" Uhimr 0x80040001 0x11# i* I  X9 v, Z, [6 y% h
himr 0x80040002 0x22% K$ s4 N' H2 H9 @3 d1 @& ?
himr 0x80040003 0x336 M( @% R. M* o' p( z7 }/ h% K4 ]
himr 0x80040004 0x44
0 [$ {1 V2 J8 p/ ^6 ]7 [) i7 E3 I! [himr 0x80040005 0x55  m2 {# v# g3 M6 i. z0 I0 P- X
# J9 j. }2 c' z% t
SN也是类似。
& [6 u0 |9 X! A1 e1 Y4 f% L6 f* X) i) a% p' \0 M
现在主要是,谁告诉我们MAC和SN的地址?
/ [2 A* S- y' Y+ {% j  D* l
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37   Z" S5 q7 _* K6 ~7 @# B' _+ _
一直想找到运程修改MAC和SN的办法,苦于无解啊
# v2 y/ I, z% X7 ], ?. I+ |7 O
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ; q9 G" w* P  ^1 R4 ~$ ^) }

/ Y; N0 r0 n7 A修改的代码早有了。到今天不会编译。3 x! E' E) T9 @- E0 W2 \2 D+ Y
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    # O3 R* s  e9 o1 P5 f2 a2 j
  2. #include <malloc.h>
    - x! F; G$ f6 {. {) a
  3. #include <sys/types.h>
    7 T* b! q7 w  H* T$ b4 {
  4. #include <sys/stat.h>
    ( M& c& C9 n. @3 r* U
  5. #include <sys/ioctl.h>$ |! A# {6 C7 Y' X" ~. |( m; R
  6. #include <stdio.h>
    $ t) G4 r9 R- s5 [
  7. #include <string.h>
    5 ?4 K7 @7 x0 M/ s- w
  8. : u( p3 e& L& i* q* U4 m% ]
  9. typedef struct {
    ) g8 j* i( I# u6 g6 E
  10.         unsigned int        e2prom_cmd_sub_addr;4 e- O0 c) y6 x- R9 o: z0 E
  11.         unsigned int        sub_addr_count;7 J7 s) F- D! w! c5 t8 d& |
  12.         unsigned char*        e2prom_cmd_data;
    2 M2 |7 s5 b# A. K
  13.         unsigned int        data_count;
    $ X0 d! n  N9 Y9 t( D5 E0 W, E
  14. } e2prom_s_cmd;
    : ]! R8 }0 A7 b' T% x3 ]2 U- P
  15. . ~1 J' y$ a0 k5 k$ x! Z. C+ v( \
  16. #define E2PROM_CMD_READ 1, F5 S9 X7 b5 o* Q
  17. #define E2PROM_CMD_WRITE 2. u& I5 O" |! \7 y- j
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    % @  l+ p% O- Y+ Y
  19. + H- L7 Y. l7 c6 P
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    0 `; `8 z) J: u5 a4 U; {
  21. {
    ; U$ [$ X- d& J) f4 B
  22.         int fd, ret;, B) `+ ?! \2 o7 I6 v
  23.         e2prom_s_cmd arg;
    . `0 e8 B9 C( s# U$ A' E) T
  24.         unsigned char buf[0x18];4 I4 C4 b" [1 |- {0 a1 P: s

  25. 0 l8 X' P0 t$ W; V1 K
  26.         fd = open(E2PROM_DEVICE, O_RDWR);- p$ T; h7 W0 l
  27.         if (fd  < 0) {% N, F' b- L0 {  L
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / f, q) F% ^7 w2 f
  29.                 return -1;
    6 d1 A3 l- f) E! ~$ v. a/ a
  30.         }4 O1 C) |( B8 Y2 j& Y! z( F
  31.         arg.sub_addr_count      = 2;
    7 A) h! D4 P8 O9 S) g! d$ k
  32.         arg.data_count          = 0x18;2 q" U1 Y+ J) F! r& u6 q
  33.         arg.e2prom_cmd_sub_addr = 0x290;$ `( T. R9 C9 `0 X8 f; q8 x+ f
  34.         arg.e2prom_cmd_data     = buf;9 L' ?/ w/ e2 }: z3 I, Z) E. Z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    # G$ \6 I1 \4 b1 f/ v" x# U
  36.         if (ret != 0) {( @1 J) @, X& N$ `2 o8 z
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    + }2 q5 d' L7 Q* \6 T& x
  38.                 return -1;
    / K1 t/ E; B) s4 b( {
  39.         }
      Q7 R( }/ R7 m
  40.         memcpy(mac, buf, 6);! w3 |1 L3 l& A$ \3 Y
  41.         memcpy(stbid, &buf[6], 18);2 [7 @6 C7 w4 e  E- n
  42.         stbid[18] = '\0';
    6 E# b% Q. t* }* t! f6 f8 R
  43. 0 Y9 |; W. l( @: I7 Q2 ~
  44.         return 0;, [" m$ r7 ^, f# o% X% ?
  45. }
    9 V1 b/ x4 n  d4 ^
  46. : x8 z: M. [: c6 G
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)4 ^7 P% [) z: z1 _, D1 R
  48. {9 w  E% c$ B/ u9 R0 t
  49.         int fd, ret;& N3 |& x- J' [- ^$ y& j$ \* Q
  50.         e2prom_s_cmd arg;
    8 ^: y) p; _8 I6 k" X% Z! S. J( k0 `
  51.         unsigned char buf[0x18];% R) ~/ i" |' F3 H7 J! r5 ^
  52. 9 a1 o, j4 B' n* g) }4 n' w: k- H
  53.         memcpy(buf, mac, 6);- g, L6 y# s0 A. x2 {
  54.         memcpy(&buf[6], stbid, 18);, \  y9 n; |& T) {
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    # H( |) _1 s" `$ Z$ F: r9 U, K
  56.         if (fd  < 0) {$ v+ Y( ?0 Y1 N, k& G
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);& m* B4 `. ]' U, l
  58.                 return -1;- N7 ^0 o7 B2 l' a" n
  59.         }- l) y: V5 c& l$ M" |+ F; f% l
  60.         arg.sub_addr_count      = 2;; j+ @1 X# y- Z$ i( l7 Q
  61.         arg.data_count          = 0x18;
    + }" w! Q; _0 u
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ; a* q, d! [; u; m, m- Q
  63.         arg.e2prom_cmd_data     = buf;  i+ U5 Z, N8 q* \$ \7 y/ O) p
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    4 i& s# V4 |) e8 x9 p  `
  65.         if (ret != 0) {
    : A& r) L* g  q: a2 K. V
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);" s& i+ `1 o+ z. y4 j5 l
  67.                 return -1;( y. ^; B4 L7 r
  68.         }
    9 p$ O  g: M0 W  ?

  69. $ t9 v/ R. z' u
  70.         return 0;
    ( R1 Y; ^3 p2 U
  71. }* O, e, n4 _- b  |

  72. 1 D8 u1 Q2 M7 G1 ]$ Z9 o7 T
  73. int main(); b. f2 R0 d+ c2 @4 D. m
  74. {$ _  q; P7 Q2 ~" Q9 _+ c
  75.         char c;
    3 u+ X$ L) r3 b$ |) C1 P$ l4 r
  76.         int i, macs[6];
    - k! @. s; \7 y2 a# N& ?7 S
  77.         unsigned char mac[6];
    5 c6 p, U; x4 u& @  x+ n
  78.         unsigned char stbid[256];* H2 a  H) r- m

  79. # B8 s! L/ B# ^2 L$ N  R1 w; p
  80.         if (readparam(mac, stbid) < 0)# {5 {- }$ R% {2 S& R& p
  81.                 return 1;2 A$ @2 l; f# e7 t1 y! G7 P

  82. : @, A, D. i/ h3 L7 t5 a
  83.         printf("Current parameters: \n");
    ; R, @: N8 J0 @
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% v* ^1 T4 ^$ [* U2 d/ r  S; R# D
  85.         printf("  STBID: %s\n", stbid);5 k; i  o3 q2 ~. K, b3 V
  86.        
    + N6 j9 t( Z* i1 J5 Q/ q( M  |
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");! i" W+ m1 X. [$ [  t
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    9 _6 S2 s5 j( k5 i; C
  89.                 printf("Input MAC error\n");9 _& V1 u  B0 ?5 `. x& E
  90.                 return 1;  d' [' w" E( u
  91.         }7 G& U9 }( ~  q/ D+ C
  92.         for (i=0; i<6; i++)mac[i] = macs[i];) v6 R  E1 Z( `9 k
  93.         printf("\nPlease input new STBID: ");
    ( k8 ?& K+ I7 V3 O( n8 p+ h
  94.         scanf("%s", stbid);
    6 d1 `' o! M" d/ Z- z5 M/ ], A3 g$ d
  95.         if (strlen(stbid) != 18) {
    0 T* q7 \& s" X/ j* U3 j3 L
  96.                 printf("Invalid stbid\n");
    7 N, D9 _* c% B$ a: c
  97.                 return 1;, _! W! K% J+ s- n7 v9 l# X" W' W
  98.         }8 v1 K" ~4 d1 c! f' S9 N
  99.         printf("\nNew parameters: \n");0 y5 c" J) _. O1 C
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);4 L( F, \5 n1 c) J3 p0 E
  101.         printf("  STBID: %s\n", stbid);9 I8 ]' ~  @* y( l* L2 I" p6 P5 u

  102. 9 U' B! F$ r+ m
  103.         printf("\nDo you want to change paramemters? (y/N) ");  N  D& T+ ?" S& H' o' K; {0 h
  104.         for (;;) {
    9 A+ Z' x7 G1 k6 w5 S8 Q5 \5 n
  105.                 c = getchar();" M) h8 y" M& K; x
  106.                 if (c == 'y' || c == 'Y')! H# o: m7 X8 I& `
  107.                         break;3 R  W( ?( U+ ]) z1 M) }9 Q5 G
  108.                 if (c == 'n' || c == 'N') {$ d" E  q/ g( {- u9 ?
  109.                         printf("\nAborted.\n");
    . w1 z, ^$ H  Q/ Z- A" F2 y
  110.                         return 1;) Q% _: @( a8 [2 w7 \
  111.                 }
    % g3 Z# ^' d4 L1 w
  112.         }/ D- |. Z( \. [5 S1 b
  113.         if (writeparam(mac, stbid) == 0) - k5 W( m& Q$ N, _9 y' u' X
  114.                 printf("Parameters changed.\n");  {2 s/ q/ s, |9 K$ Z% ?
  115. - M7 D$ d! G4 l" j
  116.         return 0;
    9 ^# X; Y. ~0 K5 L
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 |福建| 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 |浙江| 显示全部楼层
0522 发表于 2012-3-23 18:24
3 ]8 d2 }- @: O, C在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
8 y; z8 l+ w6 x2 E* `: y
你用的编译命令行格式是什么?
- N9 F6 P: X5 _' Q0 g. M; v: v
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部