找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15789|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    6 l4 l( j$ @! C2 ~+ Z6 S
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    - s9 y3 S3 K: q
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:; T( V& o1 ^! i
usage: himr <address> <value>. sample: himr 0x80040000 0x0% L( ?( K- G9 Q5 c# @8 B
* p7 \8 e9 q2 P* k: |

' Q1 m: ]0 U5 d, s2 ?7 C不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?9 f+ ~! e% Z4 f0 j3 h  {

1 G5 A& J: c/ B/ e) l2 u1 `补充内容 (2012-3-8 09:42):
% w0 N7 f6 u+ V: v$ l8 Ghttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数# E" O8 k8 h. O3 p( m/ g8 R  X
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。& @. i2 P, S) g5 Z0 q
1 r4 g' E4 r& [
himr <address> <value>. sample: himr 0x80040000 0x0
+ G% }: v- u& M* A
3 Y/ P1 `/ u% s例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。* D7 f, Q! g0 t$ L2 x
himr 0x80040000 0x00" ?  q4 n/ c, Y. P5 t
himr 0x80040001 0x11% ~, w  p4 R+ C  _5 Q
himr 0x80040002 0x22
2 B3 W8 x1 U. \9 o3 Q( X  Fhimr 0x80040003 0x332 ~* T- \$ s/ d* S: V, i* V
himr 0x80040004 0x44! ]) N: [5 v4 i
himr 0x80040005 0x554 J* Q. a, c" w
: h/ ?) ]' ]) @  p3 p+ e7 Q
SN也是类似。
: ]$ H8 C* n6 O6 a( r* N* z( _5 Z
现在主要是,谁告诉我们MAC和SN的地址?! T1 M  o& ~' k7 A( I& r
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ' m: h4 U& F# F8 a
一直想找到运程修改MAC和SN的办法,苦于无解啊
+ f4 `! J& V* F
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 " Q* V% E; u* c8 C) x8 k
% h# j  ~2 X* ~+ V
修改的代码早有了。到今天不会编译。
& x0 C9 I0 k4 k; y2 l! x需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    7 G& v, F9 z% z, F3 y
  2. #include <malloc.h>
    + M2 p+ C/ a6 U
  3. #include <sys/types.h>6 {3 |" N9 l# H4 s6 u! Q
  4. #include <sys/stat.h>
    ; v1 h9 O  A& p% h0 U
  5. #include <sys/ioctl.h>
    6 W, ]& P+ F4 Z  X  D
  6. #include <stdio.h>5 u5 n3 S6 V& ]
  7. #include <string.h>. u) ^! A: W4 U! z  H7 D

  8. 3 k" U; m8 I! Z4 \! b# A1 x
  9. typedef struct {7 m6 i% W/ T  I* v
  10.         unsigned int        e2prom_cmd_sub_addr;
    # I1 T/ n" Q+ w3 u9 ]
  11.         unsigned int        sub_addr_count;0 U  o; U* _! j; f; H' G' S" Y
  12.         unsigned char*        e2prom_cmd_data;
    " Z+ w& s& D2 E2 \' w5 t- W  D# {
  13.         unsigned int        data_count;' o, p- a, g! |; ?9 G
  14. } e2prom_s_cmd;
    0 j" }2 h$ z) O; J* w- w! T

  15. # V! }& G: T* Y$ X# C
  16. #define E2PROM_CMD_READ 1
    2 s8 |! a! _2 A9 r8 d( i  |
  17. #define E2PROM_CMD_WRITE 2
    ! H/ d( U" r8 M6 l0 K8 k( ~
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    % [2 H: F" f" C' Q1 L8 U. O% v
  19. : N5 c+ C2 a% e+ S
  20. static int readparam(unsigned char *mac, unsigned char *stbid). n2 M4 L% T$ C: J) x
  21. {
    , p" X% @; T( N  z# J
  22.         int fd, ret;3 `$ E' U. G. Q" t
  23.         e2prom_s_cmd arg;# g, a% s7 A- j% b. Q8 a$ B
  24.         unsigned char buf[0x18];
    , G$ I& @2 g# h5 Y$ m2 q8 ~
  25. % f7 R4 X: y& H, i: K5 w4 s
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 [3 c8 x5 u% f0 s* o
  27.         if (fd  < 0) {
    & O+ _- q2 h: {- c: v
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ) A' q- h* g0 \' q! W/ O) e- a$ O1 W
  29.                 return -1;; N1 p/ I2 M2 u7 ?6 n- u
  30.         }( H; s! r9 l! ^
  31.         arg.sub_addr_count      = 2;; {" M3 C( L4 ^; R# C( q
  32.         arg.data_count          = 0x18;
    3 S4 q% |0 v6 J
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ! ]1 U3 @4 ]8 u* r
  34.         arg.e2prom_cmd_data     = buf;1 O% j. \: p) w1 ]: _% J
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);5 S' L# A; d% O, c: ?
  36.         if (ret != 0) {0 _1 @& i5 p; t' F7 r3 ~# x1 J
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    . S+ K! z# J! Q
  38.                 return -1;9 V6 R6 n$ i5 N/ ]
  39.         }1 V2 ^' K$ ]7 J1 l: I8 I  ^( |  i5 V" M
  40.         memcpy(mac, buf, 6);. _  r% P6 e; ~! ^2 |+ a
  41.         memcpy(stbid, &buf[6], 18);0 q: p" _& E/ @# [$ }7 ?
  42.         stbid[18] = '\0';7 s& _! K8 G" P$ g* o

  43. / r4 n0 B$ Z8 A# U$ K$ j- [
  44.         return 0;2 \* Q, D. H9 e: r  m
  45. }
    " I& K9 K, q  ~" [
  46. 3 s5 n! h9 ?" B& x0 Y& u7 x
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    & Q8 _( p* d& I
  48. {
    % G3 t; a& I' E, r$ i; E
  49.         int fd, ret;$ \7 ]& |) A  I4 K. n6 `
  50.         e2prom_s_cmd arg;( V, I4 J) p$ F6 V0 }% Y1 H
  51.         unsigned char buf[0x18];
    : u2 s5 [$ ?1 w# I1 X. `- T* @
  52. . Q4 c9 A/ v3 e, Y$ f; E) m
  53.         memcpy(buf, mac, 6);" ]0 \4 A0 ~% A7 n) H! Z6 M
  54.         memcpy(&buf[6], stbid, 18);) \2 w: e1 q( d4 n; Z# F, H. u8 c
  55.         fd = open(E2PROM_DEVICE, O_RDWR);. A" p0 j( U4 Q# R8 j. W. F
  56.         if (fd  < 0) {
    ; E) N6 L8 y" ?" K) u, \
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ' Y# w# [* ?# H/ _
  58.                 return -1;2 R3 r; w# l$ l, E& e7 w, X3 ^) x
  59.         }
    4 k5 v! m2 L8 f5 _* w
  60.         arg.sub_addr_count      = 2;
    * H. l; V! b  ]3 a
  61.         arg.data_count          = 0x18;
    & c- q  R5 k# }9 Y1 u
  62.         arg.e2prom_cmd_sub_addr = 0x290;3 E) T: w% Y% j) }2 `  `+ u& F
  63.         arg.e2prom_cmd_data     = buf;
    ) f% p7 }  N! L$ ~* S' g
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    + v. t& }# w$ q/ j; D& y( N
  65.         if (ret != 0) {
    / N+ V4 d& N' F( u$ l+ s% r) X
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);4 e! O8 B! ?) e* n6 p0 p
  67.                 return -1;
      U) L( e  Q7 }( ?5 H. ^  `+ e; B
  68.         }7 v- q; ?1 f5 ~; V
  69. : g3 y7 ]! S* d7 R6 Q
  70.         return 0;
    , M- @7 ?8 i* F
  71. }( d# y2 b! F2 K  h. B
  72. " y, h6 o( I6 c. v4 [+ x# R9 F
  73. int main()/ B/ W0 m2 K( `% o1 x" C
  74. {
    : u# F6 {" P+ |4 Y! Q8 y& i4 b7 h
  75.         char c;1 j8 b2 W% v: b0 }! F/ Z
  76.         int i, macs[6];* W: b+ `, V2 `9 @6 Z
  77.         unsigned char mac[6];
    ; g/ P3 B+ k/ r+ W) M/ M
  78.         unsigned char stbid[256];
    5 T" n( a  l. s5 r$ g. R
  79. 3 d. t4 B2 }6 [, v2 L; d* \
  80.         if (readparam(mac, stbid) < 0)9 H  G) p6 Z* ^6 Y
  81.                 return 1;' P. y9 f/ q4 i
  82. # k# {$ h; S* E
  83.         printf("Current parameters: \n");  ^1 d. D  K5 X( q, c# M
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , C8 U  e- ?( k6 H% ^: j2 s5 z
  85.         printf("  STBID: %s\n", stbid);1 r0 j7 c) x! c/ k& q# u& b5 w: a# I' ~
  86.        
    1 g/ `# ]: J  b- [2 g% s
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ' l+ S- ~, S/ d# y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    3 a7 R7 l9 B5 B$ c( C
  89.                 printf("Input MAC error\n");
    ) ]9 v, k8 U. p1 D8 Q( _
  90.                 return 1;
    # g! \  r- Z! n# N8 z
  91.         }
    ' U" x( w' W& \- |" h
  92.         for (i=0; i<6; i++)mac[i] = macs[i];: [; o3 h- e5 u  D% _$ q( P
  93.         printf("\nPlease input new STBID: ");) n, f! G- }4 M0 F7 D! }
  94.         scanf("%s", stbid);/ t" a4 T' l/ w0 h% s) [
  95.         if (strlen(stbid) != 18) {
    8 Y, X" E" ]. R' J/ b( W4 o
  96.                 printf("Invalid stbid\n");
    ( d0 y1 Y; B2 W) v
  97.                 return 1;
    / K4 I  x8 Z% K6 r, Y! g
  98.         }0 S+ {  o4 K' ~3 B: B! T' n
  99.         printf("\nNew parameters: \n");- x0 {" k& a2 N
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);8 K# W" W  i# Q; i0 E7 C
  101.         printf("  STBID: %s\n", stbid);! Y* G( l( U; h2 b

  102. ' Q! }. q; I7 g2 W& a
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    9 S! A) u8 O2 [+ ?/ f
  104.         for (;;) {' p% V9 v# f! x2 L7 K8 U+ `  Z
  105.                 c = getchar();9 Q% t) e/ _1 i9 X# s) i4 P( z
  106.                 if (c == 'y' || c == 'Y')9 ?# o0 ?$ J; ^# p9 D! ]9 J& v
  107.                         break;! c* A. q; C* v8 P
  108.                 if (c == 'n' || c == 'N') {- [/ O7 e0 _* l4 K) U
  109.                         printf("\nAborted.\n");
    ) s* n$ L0 |2 y, p, H' a+ j7 }+ U% B
  110.                         return 1;7 F! e& N8 ]4 a& ?* I: r
  111.                 }
    ' K4 _1 [* A/ ]" o* ~+ l
  112.         }
    4 s% u+ g+ A8 b! j7 P: f
  113.         if (writeparam(mac, stbid) == 0) $ N/ l6 X8 U/ d1 I$ q* V" s
  114.                 printf("Parameters changed.\n");
    1 x$ E2 e( _/ {5 C+ k: {
  115.   ?6 t/ D' h* B  R
  116.         return 0;. c- q3 L' H: c: S0 u
  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
9 e( h+ w1 [# j+ J6 \+ Q在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
* H% p- N- e$ ~0 T3 ]9 ]3 }7 \8 ]
你用的编译命令行格式是什么?
" G1 N6 f" M. J5 e
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

QQ|Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-3-19 00:00 , Processed in 0.027720 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表